package com.zpark.se.date;

import java.util.Calendar;
import java.util.Date;

/**
 * Calendar 类是一个抽象类，它为特定瞬间与 YEAR、MONTH、DAY_OF—MONTH、HOUR 等日历字段之间
 * 的转换提供了一些方法，并为操作日历字段（如获得下星期的日期） 提供了一些方法。
 * 创建 Calendar 对象不能使用 new 关键字，因为 Calendar 类是一个抽象类，但是它提供了一个
 * getInstance() 方法来获得 Calendar类的对象。getInstance() 方法返回一个 Calendar 对象，
 * 其日历字段已由当前日期和时间初始化。
 */
public class Demo02 {
    public static void main(String[] args) {
        // 获取Calendar类对象
        Calendar calendar = Calendar.getInstance();
        // 常用方法

        /*
          getTime(): 返回一个 Date对象，该对象表示此 Calendar日期的“当前时间”
         */
        Date time = calendar.getTime();
        System.out.println(time);

        // 获取年份
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);

        // 获取月份，注意：月份是从0开始的，所以要+1
        int month = calendar.get(Calendar.MONTH)+1;
        System.out.println(month);

        // 获取日期
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);

        // 获取时
        int hour = calendar.get(Calendar.HOUR);
        System.out.println(hour);

        // 获取分钟
        int minute = calendar.get(Calendar.MINUTE);
        System.out.println(minute);

        // 获取秒
        int second = calendar.get(Calendar.SECOND);
        System.out.println(second);

        // 获取毫秒
        int millisecond = calendar.get(Calendar.MILLISECOND);
        System.out.println(millisecond);

        // 获取星期，以星期日为第一天
        int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        System.out.println(week);

        // 获取本月第几周
        int week2 = calendar.get(Calendar.WEEK_OF_MONTH);
        System.out.println(week2);
    }
}
